package br.com.lcp.agenda.managedbeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import br.com.lcp.agenda.entities.Grupo;
import br.com.lcp.agenda.repository.Repository;

@ManagedBean(name="grupoBean")
@SessionScoped
public class GrupoBean implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Repository<Grupo> grupoRepo = new Repository<Grupo>(Grupo.class);
	
	private String descricao;
	
	private ArrayList<SelectItem> grupos;
	
	private List<Grupo> tabelaGrupos = new ArrayList<Grupo>();

	private Integer idGrupo;
	
	/**
	 * @return the idGrupo
	 */
	public Integer getIdGrupo() {
		return idGrupo;
	}

	/**
	 * @param idGrupo the idGrupo to set
	 */
	public void setIdGrupo(Integer idGrupo) {
		this.idGrupo = idGrupo;
	}

	/**
	 * @param grupos the grupos to set
	 */
	public void setGrupos(ArrayList<SelectItem> grupos) {
		this.grupos = grupos;
	}

	public String apagarGrupo(){
		Grupo grupo = new Grupo();
		grupo.setCodigo(idGrupo);
		grupo.setDescricao(descricao);
		grupoRepo.delete(grupo);
		return "grupo-sucess-rem";
	}

	
	
	public String adicionarGrupo() {
		Grupo grupo = new Grupo();
		grupo.setDescricao(descricao);
		grupoRepo.adiciona(grupo);
		return "grupo-success";
	}

	public String alteraGrupo(){
		Grupo grupo = new Grupo();
		grupo.setCodigo(idGrupo);
		grupo.setDescricao(descricao);
		grupoRepo.altera(grupo);
		return "grupo-success";
	}
	

	public String alteraForm(){
		return "grupo-form-alt";
	}
	
	// getters and setters
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getDescricao() {
		return descricao;
	}


	public void setTabelaGrupos(List<Grupo> tabelaGrupos) {
		this.tabelaGrupos = tabelaGrupos;
	}


	public List<Grupo> getTabelaGrupos() {
		this.tabelaGrupos = (List<Grupo>) grupoRepo.buscaTodos();		
		return tabelaGrupos;
	}
	
	
	public ArrayList<SelectItem> getGrupos() {
		Collection<Grupo> gruposSalsixa = grupoRepo.buscaTodos();
		this.grupos = new ArrayList<SelectItem>();
		for (Grupo grupo : gruposSalsixa) {
			SelectItem item = new SelectItem();
			item.setValue(grupo.getCodigo());
			item.setLabel(grupo.getDescricao());
			this.grupos.add(item);
		}
		return this.grupos;
	}

}
